/**
 * webpack配置文件 - 基础
 * @module webpack
 * @author zhanghuan
 * @date 2021/03/10
 */
 const path = require('path')
 const { name } = require('./package.json')
 const { VueLoaderPlugin } = require('vue-loader')
 const HtmlWebpackPlugin = require('html-webpack-plugin')
 
 module.exports = {
     entry: './src/main.js',
     devtool: 'none',
     mode: process.env.NODE_ENV,
     module: {
         rules: [{
             test: /\.vue$/,
             loader: 'vue-loader'
         },
         {
             test: /\.js$/,
             loader: 'babel-loader',
             exclude: file => (
                 /node_modules/.test(file) &&
                 !/\.vue\.js/.test(file)
             )
         },
         {
             test: /\.(js|vue)$/,
             loader: 'eslint-loader',
             include: [path.resolve(__dirname, 'src')],
             options: {
                 formatter: require('eslint-friendly-formatter')
             },
             enforce: 'pre'
         },
         // 它会应用到普通的 `.css` 文件
         // 以及 `.vue` 文件中的 `<style>` 块
         {
             test: /\.css$/,
             use: [
                 'vue-style-loader',
                 'css-loader'
             ]
         },
         // 普通的 `.scss` 文件和 `*.vue` 文件中的
         // `<style lang="less">` 块都应用它
         {
             test: /\.less$/,
             use: [
                 'style-loader',
                 'css-loader',
                 'less-loader'
             ]
         },
         {
             test: /\.(png|jpg|gif)$/i,
             use: [{
                 loader: 'url-loader',
                 options: {
                     limit: 8192
                 }
             }]
         }
         ]
     },
     plugins: [
         // 请确保引入这个插件！
         new VueLoaderPlugin(),
         new HtmlWebpackPlugin({
             template: './public/index.html',
             favicon: './public/favicon.ico',
             options: {
                 publicPath: './',
                 title: name
             }
         }),
     ],
 };